import { request } from '@/service/request';
import { DD_SYSTEM } from '@/constants/api-pre';

/** dict */
export type Dict = Api.Common.CommonRecord<{
  /** 字典类型 */
  dictType: string;
  /** 字典标签 */
  label: string;
  /** 字典值 */
  value: string;
  /** 颜色类型 */
  colorType: string | null;
  /** css 样式 */
  cssClass: string;
  /** 显示顺序 */
  sort: number;
  /** 字典备注 */
  remark: string;
}>;

/** dict simple-list */
// export type DictSimpleList = {
//   /** 字典类型 */
//   dictType: string;
//   /** 字典标签 */
//   label: string;
//   /** 字典值 */
//   value: string;
//   /** 颜色类型 */
//   colorType: string | null;
//   /** css 样式 */
//   cssClass: string;
// };

/**
 * 字典数据项分页VO
 *
 * @description 字典数据分页对象
 */
export interface DictVO {
  /** 字典名称 */
  name: string;

  /** 字典编码 */
  dictCode: string;

  /** 字典数据集合 */
  dictDataList: CommonType.DictOption[];
}

/** user search params */
export type DictSearchParams = CommonType.RecordNullable<
  Pick<Dict, 'dictType' | 'label' | 'status'> & Api.Common.CommonSearchParams
>;

export type DictEditAndCreateParams = CommonType.RecordNullable<
  Pick<Dict, 'dictType' | 'label' | 'value' | 'remark' | 'status' | 'sort' | 'colorType' | 'cssClass'>
>;

/** user list */
export type DictList = Api.Common.PaginatingQueryRecord<Dict>;

/** 获取字典数据表单 URL */
export function getFetchDictUrl(id: number) {
  return `${DD_SYSTEM}/dict/${id}/form`;
}

/** 获取字典列表 */
export function fetchGetDictList(params?: DictSearchParams) {
  return request<DictList>({
    url: `${DD_SYSTEM}/dict/page`,
    method: 'get',
    params
  });
}

/**
 * 新增字典
 *
 * @param data
 */
export function createDict(data: DictEditAndCreateParams) {
  return request<boolean>({
    url: `${DD_SYSTEM}/dict`,
    method: 'post',
    data
  });
}

/**
 * 修改字典
 *
 * @param id
 * @param data
 */
export function updateDict(id: number, data?: DictEditAndCreateParams) {
  return request<boolean>({
    url: `${DD_SYSTEM}/dict/${id}`,
    method: 'put',
    data
  });
}

/**
 * 删除字典
 *
 * @param ids
 */
export function deleteDict(ids: string) {
  return request<boolean>({
    url: `${DD_SYSTEM}/dict/${ids}`,
    method: 'delete'
  });
}

/** 获取字典精简字典列表 */
export function fetchGetDictSimpleList() {
  return request<DictVO[]>({
    url: `${DD_SYSTEM}/dict/simple-list`,
    method: 'get'
  });
}
